package cn.b.sky.mes.cm.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.cm.model.MateriaProcessAssign;
import cn.b.sky.mes.cm.model.Material;
import cn.b.sky.mes.cm.model.condition.MaterialCondition;
import cn.b.sky.common.exception.ImeException;
import cn.b.sky.common.model.BatchJobReport;

/**
 * 
 * <strong>Title : MaterialService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.cm.service<br></strong>
 * <strong>Description : </strong>物料主数据业务接口<br> 
 * <strong>Create on : 2015-9-30 下午02:01:05<br></strong>
 * <p>
 * @author zhaoxin01<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface MaterialService {
  /**
   * 
   * <strong>Title : selectMaterialList<br></strong>
   * <strong>Description : </strong>查询物料主数据列表<br> 
   * <strong>Create on : 2015-9-30 上午11:16:47<br></strong>
   * <p>
   * @param materialCondition
   * @return
   * List<Material>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Material> selectMaterialList(MaterialCondition materialCondition);

  /**
   * 
   * <strong>Title : selectMaterialListCount<br></strong>
   * <strong>Description : </strong>查询物料主数据条数<br> 
   * <strong>Create on : 2015-9-30 上午11:17:11<br></strong>
   * <p>
   * @param materialCondition
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectMaterialListCount(MaterialCondition materialCondition);

  /**
   * 
   * <strong>Title : selectMaterial<br></strong>
   * <strong>Description : </strong>根据编码查询物料<br> 
   * <strong>Create on : 2015-9-30 上午11:17:29<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @return
   * Material
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Material selectMaterial(@Param("siteCode") String siteCode, @Param("materialCode") String materialCode);

  /**
   * 
   * <strong>Title : selectProcessByMaterial<br></strong>
   * <strong>Description : </strong>查询物料对应的工艺列表<br> 
   * <strong>Create on : 2015-9-30 上午11:17:53<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @return
   * List<MateriaProcessAssign>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MateriaProcessAssign> selectProcessByMaterial(@Param("siteCode") String siteCode,
      @Param("materialCode") String materialCode);

  /**
   * 
   * <strong>Title : insertMaterial<br></strong>
   * <strong>Description : </strong>新增物料<br> 
   * <strong>Create on : 2015-9-30 上午11:18:11<br></strong>
   * <p>
   * @param material
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertMaterial(Material material);

  /**
   * 
   * <strong>Title : updateMaterial<br></strong>
   * <strong>Description : </strong>更新物料主数据<br> 
   * <strong>Create on : 2015-9-30 上午11:18:55<br></strong>
   * <p>
   * @param material
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateMaterial(Material material) throws ImeException;

  /**
   * 
   * <strong>Title : deleteMaterial<br></strong>
   * <strong>Description : </strong>@方法注释说明写在此处@<br> 
   * <strong>Create on : 2015-9-30 下午01:24:24<br></strong>
   * <p>
   * @param material
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport deleteMaterial(String siteCode, String materialCode);

  /**
   * 
   * <strong>Title : selectLastProcessByMaterial<br></strong>
   * <strong>Description : </strong>获取最新版本的工艺，以及默认工艺<br> 
   * <strong>Create on : 2015-12-10 上午10:09:42<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @return
   * List<MateriaProcessAssign>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MateriaProcessAssign> selectLastProcessByMaterial(String siteCode, String materialCode);

  /**
   * 
   * <strong>Title : selectMaterialSuggests<br></strong>
   * <strong>Description : </strong>物料搜索建议<br> 
   * <strong>Create on : 2016年4月11日 下午7:14:27<br></strong>
   * <p>
   * @param material
   * @return
   * List<Material>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Material> selectMaterialSuggests(MaterialCondition material);

}
